package com.hll.basic;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @author hll
 * @create 2022-05-12 16:00
 */
@Controller
@RequestMapping("/request")
public class RequestController {
  /*value 设置多个----多接口映射*/
  /*method设置多个--只支持get，post*/
  @RequestMapping(
      value = {"/testRequestMapping", "/test"},
      method = {RequestMethod.GET, RequestMethod.POST})
  public String success() {
    return "success";
  }

  /*相当于 method.GET */
  @GetMapping("/testGetMapping")
  public String testGetMapping() {
    return "success";
  }

  /*
  params -- 参数限制  username -- 必须携带该参数
  password!=1234 表示必须有参数并且参数值不能为1234
  headers---请求头限制，有 Host(请求ip:端口)必须为。。。。

  不满足这些限制， HTTP状态 400 - 错误的请求
  * */
  @RequestMapping(
      value = "/testParamsAndHeaders",
      params = {"username", "password!=1234"},
      headers = {"Host=localhost:8080"})
  public String testParamsAndHeaders() {
    return "success";
  }

  // ？：表示任意的单个字符
  // *：表示任意的0个或多个字符
  // **：表示任意的一层或多层目录
  // 注意：在使用**时，只能使用/**/xxx的方式
  // @RequestMapping("/a?a/testAnt")
  // @RequestMapping("/a*a/testAnt")
  @RequestMapping("/**/testAnt")
  public String testAnt() {
    return "success";
  }

  // 路径中的占位符
  @RequestMapping("/testPath/{id}/{username}")
  public String testPath(
      @PathVariable("id") Integer id, @PathVariable("username") String username) {
    System.out.println("id:" + id + ",username:" + username);
    return "success";
  }
}
